#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
CronPy Web管理界面启动脚本
"""

import sys
import os
import argparse
import webbrowser
import threading
import time

# 添加项目根目录到Python路径
current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.dirname(current_dir)
if parent_dir not in sys.path:
    sys.path.insert(0, parent_dir)

def open_browser(url):
    """打开浏览器"""
    time.sleep(1)  # 等待服务器启动
    try:
        webbrowser.open(url)
        print(f"✓ 已打开浏览器访问: {url}")
    except Exception as e:
        print(f"⚠ 无法自动打开浏览器: {e}")
        print(f"请手动访问: {url}")

def main():
    """主函数"""
    parser = argparse.ArgumentParser(description='PyCron Web管理界面')
    parser.add_argument('--host', default='0.0.0.0', help='监听主机 (默认: 0.0.0.0)')
    parser.add_argument('--port', type=int, default=8080, help='监听端口 (默认: 8080)')
    parser.add_argument('--debug', action='store_true', help='启用调试模式')
    parser.add_argument('--no-browser', action='store_true', help='不自动打开浏览器')
    # 计算cronpy根目录的config路径作为默认值
    cronpy_root = os.path.dirname(current_dir)
    default_config_dir = os.path.join(cronpy_root, 'config')
    parser.add_argument('--config-dir', default=default_config_dir, help='配置文件目录')

    args = parser.parse_args()

    print("🚀 启动PyCron Web管理界面...")
    print(f"📁 配置文件目录: {args.config_dir}")
    print(f"🌐 监听地址: {args.host}:{args.port}")
    print(f"🔧 调试模式: {'启用' if args.debug else '禁用'}")
    print("-" * 50)

    try:
        # 设置环境变量
        os.environ['FLASK_ENV'] = 'development' if args.debug else 'production'
        os.environ['PYCRON_CONFIG_DIR'] = args.config_dir

        # 导入Flask应用
        from app import app

        # 如果不是调试模式且不是自动打开浏览器，则启动浏览器
        if not args.debug and not args.no_browser:
            url = f"http://localhost:{args.port}"
            threading.Thread(target=open_browser, args=(url,), daemon=True).start()

        # 启动服务器
        print("📡 正在启动Web服务器...")
        app.run(
            host=args.host,
            port=args.port,
            debug=args.debug,
            threaded=True
        )

    except ImportError as e:
        print(f"❌ 导入错误: {e}")
        print("请确保已安装所需的依赖包:")
        print("pip install -r requirements.txt")
        sys.exit(1)

    except Exception as e:
        print(f"❌ 启动失败: {e}")
        sys.exit(1)

if __name__ == "__main__":
    main()
